# 深度浅拷贝
lst1 = [1, 2, 3]
lst2 = lst1
print(f'lst1:{lst1},lst2{lst2}')
print('我们修改lst1')
lst1[0] = 0
print(f'lst1:{lst1},lst2{lst2} 此时lst2也改变了')
print('我们修改lst2')
lst2[1] = 5
print(f'lst1:{lst1},lst2{lst2} 此时lst1也改变了')
print('以上两次修改说明 lst1与lst2在一个数据空间中')
print('拷贝就是要让 lst2不要用lst1的数据空间，深与浅,深就是这个空间里面的空间也是不一致 浅就是这个空间里面的空间可能一致')

#浅拷贝
# 导入模块 copy
import copy
lst1 = [1, 2, 3, [4, 5, 6]]
lst2 = copy.copy(lst1)
print('\n'*3)
print('浅拷贝')
print(f'lst1:{lst1}其id:{id(lst1)} ,lst2{lst2}其id:{id(lst2)}')
print('可见copy.copy(lst1)后,lst1与lst2 两id不一样')
print(f'lst1[3]:{lst1[3]}其id:{id(lst1[3])} ,lst2[3]{lst2[3]}其id:{id(lst2[3])}')
print('但是lst1[3]与lst2[3]的id是一样的,所以是【浅拷贝】')

lst2 = lst1.copy()
print(f'lst1:{lst1}其id:{id(lst1)} ,lst2{lst2}其id:{id(lst2)}')
print('可见lst1.copy()后,lst1与lst2 两id不一样')
print(f'lst1[3]:{lst1[3]}其id:{id(lst1[3])} ,lst2[3]{lst2[3]}其id:{id(lst2[3])}')
print('但是lst1[3]与lst2[3]的id是一样的,所以这也是【浅拷贝】')

#深拷贝 数据完全独立
lst2 = copy.deepcopy(lst1)
print('\n'*3)
print('深拷贝')
print(f'lst1:{lst1}其id:{id(lst1)} ,lst2{lst2}其id:{id(lst2)}')
print('可见copy.deepcopy(lst1)后,lst1与lst2 两id不一样')
print(f'lst1[3]:{lst1[3]}其id:{id(lst1[3])} ,lst2[3]{lst2[3]}其id:{id(lst2[3])}')
print('但是lst1[3]与lst2[3]的id是一样的,所以这是【深拷贝】')

